home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Dev / Bgui / AutoDoc / baseclass.doc < prev    next >
Encoding:
Text File  |  2000-05-09  |  42.5 KB  |  2,074 lines

  1. TABLE OF CONTENTS
  2.  
  3. baseclass/--background--
  4. baseclass/BASE_ADDCONDITIONAL
  5. baseclass/BASE_ADDHOOK
  6. baseclass/BASE_ADDMAP
  7. baseclass/BASE_ADDMETHOD
  8. baseclass/BASE_CHECKLOOP
  9. baseclass/BASE_CLEARLOOP
  10. baseclass/BASE_DRAGACTIVE
  11. baseclass/BASE_DRAGGING
  12. baseclass/BASE_DRAGINACTIVE
  13. baseclass/BASE_DRAGQUERY
  14. baseclass/BASE_DRAGUPDATE
  15. baseclass/BASE_DROPPED
  16. baseclass/BASE_FINDRAWKEY
  17. baseclass/BASE_FREEDRAGOBJECT
  18. baseclass/BASE_GETDRAGOBJECT
  19. baseclass/BASE_LEFTEXT
  20. baseclass/BASE_RELAYOUT
  21. baseclass/BASE_REMCONDITIONAL
  22. baseclass/BASE_REMHOOK
  23. baseclass/BASE_REMMAP
  24. baseclass/BASE_REMMETHOD
  25. baseclass/BASE_SETLOOP
  26. baseclass/BASE_SHOWHELP
  27. baseclass/BT_BottomOffset
  28. baseclass/BT_Buffer
  29. baseclass/BT_DragObject
  30. baseclass/BT_DragQualifier
  31. baseclass/BT_DragThreshold
  32. baseclass/BT_DropObject
  33. baseclass/BT_HelpFile
  34. baseclass/BT_HelpHook
  35. baseclass/BT_HelpLine
  36. baseclass/BT_HelpNode
  37. baseclass/BT_HelpText
  38. baseclass/BT_HelpTextID
  39. baseclass/BT_HitBox
  40. baseclass/BT_Inhibit
  41. baseclass/BT_InnerBox
  42. baseclass/BT_Key
  43. baseclass/BT_LabelClick
  44. baseclass/BT_LabelObject/BT_FrameObject
  45. baseclass/BT_LeftOffset
  46. baseclass/BT_MouseActivation
  47. baseclass/BT_NoRecessed
  48. baseclass/BT_OuterBox
  49. baseclass/BT_PostRenderHighestClass
  50. baseclass/BT_Qualifier
  51. baseclass/BT_RawKey
  52. baseclass/BT_RightOffset
  53. baseclass/BT_TextAttr
  54. baseclass/BT_ToolTip
  55. baseclass/BT_ToolTipID
  56. baseclass/BT_TopOffset
  57. baseclass/GM_GOACTIVE
  58. baseclass/GM_GOINACTIVE
  59. baseclass/GM_HITTEST
  60. baseclass/GM_RENDER
  61. baseclass/OM_NOTIFY
  62. baseclass/OM_UPDATE
  63.  
  64. baseclass/--background--
  65.  
  66. NAME
  67.  
  68.    Class:      baseclass
  69.    Superclass: GADGETCLASS
  70.    Include File:  <libraries/bgui.h>
  71.  
  72. FUNCTION
  73.  
  74.    This is the most important gadget class in BGUI.  It is the superclass
  75.    of almost all the other BGUI gadget classes at one point or another.
  76.    It will take care of the following things for it's subclasses:
  77.  
  78.    o  Notification
  79.    o  Frames
  80.    o  Labels
  81.    o  Online-help.
  82.    o  Basic Drag and Drop support.
  83.  
  84.    If you plan on writing a gadget class for BGUI then always sub-class
  85.    it from this class. That way you automatically inherit the above
  86.    mentioned features.
  87.  
  88. NOTE
  89.  
  90.    The methods and attributes described in this file are also valid for
  91.    all other BGUI gadget classes subclassed from this class unless
  92.    documented otherwise.
  93.  
  94.  
  95. baseclass/BASE_ADDCONDITIONAL
  96.  
  97. NAME
  98.  
  99.    BASE_ADDCONDITIONAL -- Add an object for conditional notification.
  100.  
  101. SYNOPSIS
  102.  
  103.    err = DoMethod( obj, CM_ADDCONDITIONAL, target, ctag, ttag, ftag );
  104.  
  105.    ULONG             err;
  106.    Object           *target;
  107.    struct TagItem    ctag;
  108.    struct TagItem    ttag;
  109.    struct TagItem    ftag;
  110.  
  111. FUNCTION
  112.  
  113.    To add an object to this object's conditional notification list. Conditional
  114.    notification is a simple "if ctag = true then set ttag else set ftag" style
  115.    of notification.
  116.  
  117. INPUTS
  118.    target   -  A pointer to the object to add.
  119.  
  120.    ctag     -  A struct TagItem telling the attribute and the value of the
  121.                attribute data to make the condition TRUE.
  122.  
  123.    ttag     -  A  struct TagItem  containing  the  attribute and attribute
  124.                data which is set on the target when 'ctag' is TRUE.
  125.  
  126.    ftag     -  A struct TagItem  containing  the  attribute and attribute
  127.                data which is set on the target when 'ctag' is FALSE.
  128.  
  129. RESULT
  130.  
  131.    err   -  TRUE for success, FALSE for failure.
  132.  
  133. EXAMPLE
  134.  
  135.    Object      *cycle, *string;
  136.  
  137.    /*
  138.     * This will enable the string object when the
  139.     * CYC_Active attribute of the cycle object is
  140.     * 0. When the CYC_Active attribute is not 0
  141.     * the string object is disabled.
  142.     */
  143.  
  144.    DoMethod( cycle, BASE_ADDCONDITIONAL, string,
  145.       CYC_Active,  0,
  146.       GA_Disabled, FALSE,
  147.       GA_Disabled, TRUE );
  148.  
  149. SEE ALSO
  150.  
  151.    BASE_REMCONDITIONAL
  152.  
  153. baseclass/BASE_ADDHOOK
  154.  
  155. NAME
  156.  
  157.    BASE_ADDHOOK -- Add an object for hook notification.
  158.  
  159. SYNOPSIS
  160.  
  161.    err = DoMethod( obj, BASE_ADDHOOK, hook );
  162.  
  163.    ULONG          err;
  164.    struct Hook   *hook;
  165.  
  166. FUNCTION
  167.  
  168.    To add a hook to this object's hook notification list. Every time a
  169.    notification event occurs the hook is called with the following parameters:
  170.  
  171.    rc = hookFunc( hook, obj, update );
  172.    D0             A0    A2   A1
  173.  
  174.    ULONG             rc;
  175.    struct Hook      *hook;
  176.    Object           *obj;
  177.    struct opUpdate  *update;
  178.  
  179.    hook     -  A pointer to the hook structure.
  180.  
  181.    obj      -  This is a pointer to the object doing the notification.
  182.  
  183.    update   -  This is a pointer to an opUpdate structure from which you can
  184.                extract data like the visual environment and the attributes which
  185.                caused the notification.
  186.  
  187.    rc       -  Your hook routine must return non-zero when the notification
  188.                caused a change of some sort and zero if not.
  189.  
  190. INPUTS
  191.  
  192.    hook     -  A pointer to the hook structure to add.
  193.  
  194. RESULT
  195.  
  196.    err   -  TRUE for success, FALSE for failure.
  197.  
  198. EXAMPLE
  199.  
  200.    /*
  201.     * Stupid display beeping hook.
  202.     */
  203.    __saveds __asm ULONG beep( register __a0 struct Hook   *hook,
  204.                               register __a2 Object          *obj,
  205.                               register __a1 struct opUpdate *opu ) {
  206.       /*
  207.        * Only final messages.
  208.        */
  209.       if ( ! ( opu->opu_Flags & OPUF_INTERIM )) {
  210.          DisplayBeep(0);
  211.          return( 1 );
  212.       }
  213.       return( 0 );
  214.    }
  215.  
  216.    struct Hook beep_hook = { NULL,NULL,(HOOKFUNC)beep,NULL,NULL };
  217.  
  218.    /*
  219.     * Make the button beep when released.
  220.     */
  221.    DoMethod( button, BASE_ADDHOOK, &beep_hook );
  222.  
  223. SEE ALSO
  224.  
  225.    BASE_REMHOOK
  226.  
  227. baseclass/BASE_ADDMAP
  228.  
  229. NAME
  230.  
  231.    BASE_ADDMAP -- Add an object for maplist notification.
  232.  
  233. SYNOPSIS
  234.  
  235.    err = DoMethod( obj, BASE_ADDMAP, target, maplist );
  236.  
  237.    ULONG             err;
  238.    Object           *target;
  239.    struct TagItem   *maplist;
  240.  
  241. FUNCTION
  242.  
  243.    To add an object to this object's maplist notification list. Maplist
  244.    notification is similar to the notification performed by the system "icclass"
  245.    and ICA_TARGET notification.
  246.  
  247. INPUTS
  248.  
  249.    target   -  A pointer to the object to add.
  250.  
  251.    maplist  -  This can point to an array of TagItem structures containing a set
  252.                of attributes to map. This may also be NULL in which case no
  253.                mapping is done.
  254.  
  255. RESULT
  256.  
  257.    err   -  TRUE for succes, FALSE for failure.
  258.  
  259. EXAMPLE
  260.  
  261.    /*
  262.     * This map-list will convert the SLIDER_Level attribute
  263.     * to a INDIC_Level attribute before the attributes are
  264.     * passed to the 'indicator' object.
  265.     */
  266.    struct TagItem map[] = {
  267.       SLIDER_Level, INDIC_Level,
  268.       TAG_END
  269.    };
  270.  
  271.    DoMethod( slider, BASE_ADDMAP, indicator, map );
  272.  
  273. SEE ALSO
  274.  
  275.    BASE_REMMAP
  276.  
  277. baseclass/BASE_ADDMETHOD
  278.  
  279. NAME
  280.  
  281.    BASE_ADDMETHOD -- Add an object for method notification.
  282.  
  283. SYNOPSIS
  284.  
  285.    err = DoMethod( obj, BASE_ADDMETHOD, target, flags, size, id, ... );
  286.  
  287.    ULONG    err;
  288.    Object  *target;
  289.    ULONG    flags;
  290.    ULONG    size;
  291.    ULONG    id;
  292.  
  293. FUNCTION
  294.  
  295.    To add an object to this object's method notification list.  Method
  296.    notification allows you to send complete methods to another object when a
  297.    notification event occures.
  298.  
  299.    Please note that most notification will occur on the input.device's task. 
  300.    This means that the called method must not take too long to return and
  301.    generally should not do anything a normal input handler or task based code
  302.    should not do.
  303.  
  304. INPUTS
  305.  
  306.    target   -  A pointer to the object to add.
  307.  
  308.    flags    -  Any of the follwoing flags:
  309.  
  310.                BAMF_NO_GINFO
  311.  
  312.                   Normally a pointer to a GadgetInfo structure is inserted in
  313.                   the method to send. When this flag is set this will not be
  314.                   done. Please note that when a GadgetInfo is placed it is done
  315.                   as follows:
  316.  
  317.                   OM_NEW, OM_SET, OM_UPDATE, OM_NOTIFY
  318.  
  319.                      If the method to send is any of these the GadgetInfo is
  320.                      placed in the third long word of the method. All other
  321.                      methods will get the GadgetInfo in the second long word.
  322.                      This behaviour is the same as with the DoGadgetMethodA()
  323.                      routine from intuition.
  324.  
  325.                BAMF_NO_INTERIM
  326.  
  327.                   When set the method will not be sent on interim notification
  328.                   events.
  329.  
  330.    size     -  The size in long-words _including_  the method ID of the method
  331.                to send. This information is needed because a copy of the method
  332.                to send is made in an internal buffer.
  333.  
  334.    id       -  The method ID of the method to send. This field can be followed 
  335.                by the method specific data.
  336.  
  337. RESULT
  338.  
  339.    err   -  TRUE for succes, FALSE for failure.
  340.  
  341. EXAMPLE
  342.  
  343.    /*
  344.     * When notification occures 'obj1' will send the
  345.     * LVM_ADDSINGLE method to 'obj2'. The method will
  346.     * only be sent on final notification and will include
  347.     * a pointer to a GadgetInfo structure.
  348.     */
  349.    DoMethod( obj1, BASE_ADDMETHOD, obj2, BAMF_NO_INTERIM, 5,
  350.                LVM_ADDSINGLE, NULL, "new", LVAP_TAIL, 0 );
  351.  
  352. SEE ALSO
  353.  
  354.    BASE_REMMETHOD
  355.  
  356. baseclass/BASE_CHECKLOOP
  357.  
  358. NAME
  359.  
  360.    BASE_CHECKLOOP -- Private!
  361.  
  362. baseclass/BASE_CLEARLOOP
  363.  
  364. NAME
  365.  
  366.    BASE_CLEARLOOP -- Private!
  367.  
  368. baseclass/BASE_DRAGACTIVE
  369.  
  370. NAME
  371.  
  372.    BASE_DRAGACTIVE -- Tell an object to become active.
  373.  
  374.    ** V40 **
  375.  
  376. SYNOPSIS
  377.  
  378.    DoMethod( obj, BASE_DRAGACTIVE, gi, source );
  379.  
  380.    struct GadgetInfo *gi;
  381.    Object            *source;
  382.  
  383. FUNCTION
  384.  
  385.    When the object accepted to become the drag object's target this method is
  386.    called. It tells the object that it has become the active drop object by
  387.    sending this method.
  388.  
  389.    When this method is called the object should make some visual changes to
  390.    itself to let the user know that it will accept a drop from the dragged
  391.    object. By default the baseclass will render a dotted box around the hit-box
  392.    of the object.
  393.  
  394.    When you are not satisfied with this look or you simply need another visual
  395.    confirmation your class should overide the baseclass and do it itself.
  396.  
  397. INPUTS
  398.  
  399.    gi       -  A pointer to the GadgetInfo structure.
  400.  
  401.    source   -  A pointer to the object making this abject active.
  402.  
  403. RESULT
  404.  
  405.    The object should make it visually obvious it has become the active drop
  406.    object. A return code is not defined.
  407.  
  408. SEE ALSO
  409.  
  410.    BASE_DRAGQUERY, BASE_DRAGUPDATE, BASE_DRAGINACTIVE,
  411.  
  412.    The DragNDrop demos.
  413.  
  414. baseclass/BASE_DRAGGING
  415.  
  416. NAME
  417.    BASE_DRAGGING -- Input handling method for DragNDrop.
  418.  
  419.    ** V40 **
  420.  
  421. SYNOPSIS
  422.  
  423.    rc = DoMethodA( obj, gpi );
  424.  
  425.    ULONG             rc;
  426.    struct gpInput   *gpi;
  427.  
  428. FUNCTION
  429.  
  430.    To enable the baseclass to inform its subclasses when it is dragging an 
  431.    object around. I had to implement a special method which basically is the
  432.    same as the normal GM_HANDLEINPUT method supplied by the system.
  433.  
  434.    Because I had to have the option to tell the subclasses what to  do I could 
  435.    not use the GM_HANDLEINPUT method for compatibility reasons. This is where
  436.    this method comes in.
  437.  
  438.    When you write a class which uses Drag and Drop as an option the first thing
  439.    you must do in your GM_HANDLEINPUT routine is call this method. Depending on
  440.    what this method returns you continue processing the input or not.
  441.  
  442.    This method uses the  same structure as the GM_HANDLEINPUT method does
  443.    (struct gpInput * ).
  444.  
  445. INPUTS
  446.  
  447.    gpi   -  A pointer to a gpInput structure. Please note that the MethodID
  448.             field must be set to BASE_DRAGGING (see example).
  449.  
  450. RESULT
  451.  
  452.    rc -  Any of the following return codes:
  453.  
  454.          BDR_NONE
  455.  
  456.             When this is returned the baseclass did not do anything with the
  457.             message and you should process it yourself like you would normally.
  458.  
  459.          BDR_DRAGPREPARE
  460.  
  461.             This result tells you to prepare for the fact that the baseclass is
  462.             going to take over the input handling. For example a draggable
  463.             button might deselect itself before the dragging starts.
  464.  
  465.          BDR_DRAGGING
  466.  
  467.             When this is returned it means that the baseclass is moving the
  468.             object around. You should do nothing except for returning
  469.             GMR_MEACTIVE. Do not handle the input event.
  470.  
  471.          BDR_DROP
  472.  
  473.             This return code means that the object has been dropped on a
  474.             droppable object. Usually this means that you stop input processing
  475.             and return GMR_NOREUSE.
  476.  
  477.          BDR_CANCEL
  478.  
  479.             This return code means that either the drag has been cancelled or
  480.             the user dropped the object somewhere outside a droppable object.
  481.             Usually this means you return GMR_NOREUSE.
  482.  
  483. EXAMPLE
  484.  
  485.    /*
  486.     * A simple example of a drag prepared
  487.     * GM_HANDLEINPUT routine could be this:
  488.     */
  489.    ULONG handle_input( cl, obj, gpi )
  490.       Class        *cl;
  491.       Object          *obj;
  492.       struct gpInput *gpi;
  493.    {
  494.       struct gpInput copy  = *gpi;
  495.       ULONG          rc    =  GMR_MEACTIVE;
  496.  
  497.       copy.MethodID = BASE_DRAGGING;
  498.       switch ( DoMethodA( obj, ( Msg )© )) {
  499.  
  500.          case  BDR_NONE:
  501.             /* Process input like ususal. */
  502.             break;
  503.  
  504.          case  BDR_DROP:
  505.          case  BDR_CANCEL:
  506.             rc = GMR_NOREUSE;
  507.             break;
  508.  
  509.          case  BDR_DRAGPREPARE:
  510.             /* Unselect button or whatever you
  511.                need to do before dragging
  512.                starts. */
  513.             break;
  514.       }
  515.       return( rc );
  516.    }
  517.  
  518. SEE ALSO
  519.  
  520.    The DragNDrop demos.
  521.  
  522. baseclass/BASE_DRAGINACTIVE
  523.  
  524. NAME
  525.  
  526.    BASE_DRAGINACTIVE -- Deactivate drop target.
  527.  
  528.    ** V40 **
  529.  
  530. SYNOPSIS
  531.  
  532.    DoMethod( obj, BASE_DRAGINACTIVE, gi, source );
  533.  
  534.    struct GadgetInfo *gi;
  535.    Object            *source;
  536.  
  537. FUNCTION
  538.  
  539.    When the object is no longer the active target of the dragged object this
  540.    method is called.
  541.  
  542.    In this method the visual changes made in the BASE_DRAGACTIVE method must be
  543.    undone.
  544.  
  545.    By default the baseclass simply re-renders the object. If you are not content
  546.    with this behaviour your class should override the baseclass and do it
  547.    itself.
  548.  
  549. INPUTS
  550.    gi       - A pointer to the GadgetInfo structure.
  551.  
  552.    source   - A pointer to the object deactivating you.
  553.  
  554. RESULT
  555.  
  556.    The visual changes made in BASE_DRAGACTIVE should be undone. No return code
  557.    has been defined for this method.
  558.  
  559. SEE ALSO
  560.  
  561.    BASE_DRAGQUERY, BASE_DRAGACTIVE, BASE_DRAGUPDATE,
  562.  
  563.    The DragNDrop demos.
  564.  
  565. baseclass/BASE_DRAGQUERY
  566.  
  567. NAME
  568.  
  569.    BASE_DRAGQUERY -- Query if an object is droppable.
  570.  
  571.    ** V40 **
  572.  
  573. SYNOPSIS
  574.  
  575.    rc = DoMethod( obj, BASE_DRAGQUERY, gi, source, xy );
  576.  
  577.    ULONG                rc;
  578.    struct   GadgetInfo *gi;
  579.    Object              *source;
  580.    LONG                 xy;
  581.  
  582. FUNCTION
  583.  
  584.    This  method is sent to the dropable object when another object is dragged
  585.    over it. It is used to find out whether or not the object is prepared or
  586.    willing to become the active target of the dragged object.
  587.  
  588. INPUTS
  589.  
  590.    gi       -  A pointer to the drop-object it's GadgetInfo.
  591.  
  592.    source   -  A pointer to the object wanting to know if this object is willing
  593.                to become the active drop target.
  594.  
  595.    xy       -  A 32 bit integer containing the mouse coordinates relative to the
  596.                top-left of the _HitBox_ from this object. With this information
  597.                you can opt to become active only when the mouse is at a certan
  598.                position. The ListviewClass uses this to only become the active
  599.                drop target if the mouse is in the list area. The upper 16 bits
  600.                contain the x offset and the lower 16 bits the y offset.
  601.  
  602. RESULT
  603.  
  604.    rc -  When this object is ready and willing to accept data from the
  605.          inquiring object it should return BQR_ACCEPT. If not it should return
  606.          BQR_REJECT.
  607.  
  608. NOTE
  609.  
  610.    The baseclass defaults to BQR_ACCEPT for _all_ drag  objects which are
  611.    dragged uppon its HitBox. This means that to implement a usable droppable
  612.    object you must write a subclass which overides this method to make a more
  613.    resonable selection.
  614.  
  615. SEE ALSO
  616.  
  617.    BASE_DRAGACTIVE, BASE_DRAGINACTIVE, The DragNDrop demos.
  618.  
  619. baseclass/BASE_DRAGUPDATE
  620.  
  621. NAME
  622.  
  623.    BASE_DRAGUPDATE -- Update drag position.
  624.  
  625.    ** V40 **
  626.  
  627. SYNOPSIS
  628.  
  629.    rc = DoMethod( obj, BASE_DRAGUPDATE, gi, source, xy );
  630.  
  631.    ULONG                rc;
  632.    struct   GadgetInfo *gi;
  633.    Object              *source;
  634.    LONG                 xy;
  635.  
  636. FUNCTION
  637.  
  638.    When the object has become the active drop object it will get continues 
  639.    updates from the dragged object about the mouse pointer position relative to
  640.    the top-left corner of it's hitbox. The updates are sent on each timer tick.
  641.  
  642.    The update messages can be very usefull if your class needs to know the place
  643.    where the object is dropped. For instance the ListviewClass uses these
  644.    message to update the visuals to make clear where the dragged entry or
  645.    entries will be dropped.
  646.  
  647. INPUTS
  648.  
  649.    gi       -  A pointer to the GadgetInfo structure.
  650.  
  651.    source   -  A pointer to the object which sends the updates.
  652.  
  653.    xy       -  A 32 bit integer containing the mouse position relative to the
  654.                top-left corner of the hitbox. The upper 16 bits contain the x
  655.                offset and the lower 16 bits the y offset.
  656.  
  657. RESULT
  658.  
  659.    rc -  One of the following return codes:
  660.  
  661.          BUR_CONTINUE
  662.  
  663.             To signal the dragged object that this object wants to remain the
  664.             active target.
  665.  
  666.          BUR_ABORT
  667.  
  668.             To signal the dragged object that this object no longer wants to be
  669.             the active target.
  670.  
  671. NOTE
  672.  
  673.    The base class will return BUR_CONTINUE as long  as the mouse is still
  674.    located inside the object it's hitbox. When the mouse has been moved outside
  675.    the object hitbox the baseclass will return BUR_ABORT.
  676.  
  677. SEE ALSO
  678.  
  679.    BASE_DRAGACTIVE, BASE_DRAGINACTIVE, The DragNDrop demos.
  680.  
  681. baseclass/BASE_DROPPED
  682.  
  683. NAME
  684.  
  685.    BASE_DROPPED -- The object has been dropped.
  686.  
  687.    ** V40 **
  688.  
  689. SYNOPSIS
  690.  
  691.    DoMethod( obj, BASE_DROPPED, gi, source, win, req );
  692.  
  693.    struct   GadgetInfo *gi;
  694.    Object              *source;
  695.    struct   Window     *win;
  696.    struct   Requester  *req;
  697.  
  698. FUNCTION
  699.  
  700.    This method is called when the user has dropped the dragged object on this
  701.    object. Now this object may get the data it needs from the object and act
  702.    accordingly.
  703.  
  704. INPUTS
  705.  
  706.    gi       -  A pointer to the GadgetInfo.
  707.  
  708.    source   -  A pointer to the object which has been dropped.
  709.  
  710.    win      -  A pointer to the window on which the dropped object is located. 
  711.                With this pointer you can use BGUI_DoGadgetMethod() to make
  712.                visual changes to the dropped object if necessary.
  713.  
  714.    req      -  A pointer to the requester on which the dropped object is
  715.                located. Currently BGUI does not support requesters but for
  716.                future compatibility you should pass this pointer along with any
  717.                BGUI_DoGadgetMethod() you make.
  718.  
  719. RESULT
  720.  
  721.    The object should do whatever needs to be done with the dropped object. There
  722.    is no return code defined for this method.
  723.  
  724. NOTE
  725.  
  726.    To enable a useful drag and drop object you should write a subclass which
  727.    will overide the baseclass and act on dropped objects. The baseclass simply
  728.    beep the display.
  729.  
  730. SEE ALSO
  731.  
  732.    bgui.library/BGUI_DoGadgetMethod(), The DragNDrop demos.
  733.  
  734. baseclass/BASE_FINDRAWKEY
  735.  
  736. NAME
  737.  
  738.    BASE_FINDRAWKEY -- Match a rawkey to an object (or subobjects).
  739.  
  740.    ** V41 **
  741.  
  742. SYNOPSIS
  743.  
  744.    ob = DoMethod( obj, BASE_FINDRAWKEY, rawkey );
  745.  
  746.    Object  *ob;
  747.    UBYTE    rawkey;
  748.  
  749. FUNCTION
  750.  
  751.    To see if an object has the specified rawkey as its key equivalent. If the
  752.    object is a grouping or paging object, all members will checked against the
  753.    specified rawkey. A pointer to an object that matches the rawkey is returned,
  754.    or NULL if there is no match.
  755.    
  756.    This method is called by the windowclass during input handling, and is mainly
  757.    useful to class writers. If you implement a class that contains multiple
  758.    objects that can have independent key equivalents, you will need to define
  759.    this method for your class, and iterate through each sub-object in your
  760.    object, calling BASE_RAWKEY for each one. If you get a non-NULL return value,
  761.    return it. If no match is found, return NULL.
  762.  
  763. INPUTS
  764.  
  765.    rawkey   -  The rawkey to match.
  766.  
  767. RESULT
  768.  
  769.    ob -  Object with the specified rawkey, or NULL if none.
  770.  
  771. EXAMPLE
  772.  
  773.    UBYTE    k;
  774.    Object  *group;
  775.  
  776.    /*
  777.     * This would show what object is attached to each function key in the group.
  778.     */
  779.    for (k = 0x50; k <= 0x59; k++)
  780.    {
  781.       printf("F%ld: %08lx\n", k - 0x50 + 1, DoMethod(group, BASE_FINDRAWKEY, k));
  782.    };
  783.  
  784. SEE ALSO
  785.  
  786. baseclass/BASE_FREEDRAGOBJECT
  787.  
  788. NAME
  789.  
  790.    BASE_FREEDRAGOBJECT -- Delete the bitmap draggged around.
  791.  
  792.    ** V40 **
  793.  
  794. SYNOPSIS
  795.  
  796.    DoMethod( obj, BASE_FREEDRAGOBJECT, bm );
  797.  
  798.    struct BitMap *bm;
  799.  
  800. FUNCTION
  801.  
  802.    This method is called to free the BitMap created with the BASE_GETDRAGOBJECT
  803.    method.
  804.  
  805. INPUTS
  806.  
  807.    bm -  A pointer to the BitMap structure as returned by the BASE_GETDRAGOBJECT
  808.          method.
  809.  
  810. RESULT
  811.  
  812.    The bitmap must be deallocated. No return code defined.
  813.  
  814. NOTE
  815.  
  816.    When your class overiddes the BASE_GETDRAGOBJECT method it should also
  817.    override this method.
  818.  
  819. SEE ALSO
  820.  
  821.    BASE_GETDRAGOBJECT
  822.  
  823. baseclass/BASE_GETDRAGOBJECT
  824.  
  825. NAME
  826.  
  827.    BASE_GETDRAGOBJECT -- Obtain bitmap to drag.
  828.  
  829.    ** V40 **
  830.  
  831. SYNOPSIS
  832.  
  833.    bm = DoMethod( obj, BASE_GETDRAGOBJECT, gi, ibox );
  834.  
  835.    struct   BitMap     *bm;
  836.    struct   GadgetInfo *gi;
  837.    struct   IBox       *ibox;
  838.  
  839. FUNCTION
  840.  
  841.    This method is sent to the object when this class needs to obtain a bitmap
  842.    containing the image to drag accross the screen.
  843.  
  844. INPUTS
  845.  
  846.    gi    -  A pointer to the GadgetInfo structure.
  847.  
  848.    ibox  -  A pointer to an IBox structure in which you should store the bounds
  849.             of the bitmap you create. The Left and Top fields are used by the
  850.             baseclass to buffer the screen information which is going to be
  851.             covered by the dragged object. The Width and Height should be the
  852.             width and height of the bitmap.
  853.  
  854. RESULT
  855.  
  856.    bm -  A pointer to the BitMap structure containing the image to drag around
  857.          or NULL upon failure.
  858.  
  859. NOTE
  860.  
  861.    By default the baseclass will return a pointer to a BitMap containing the
  862.    Hitbox imagery of the object. If you want to change this your class should
  863.    override the baseclass and supply its own bitmap. The PaletteClass example
  864.    does this.
  865.  
  866. SEE ALSO
  867.  
  868.    BASE_FREEDRAGOBJECT, PaletteClass demos.
  869.  
  870. baseclass/BASE_LEFTEXT
  871.  
  872. NAME
  873.  
  874.    BASE_LEFTEXT -- Private!
  875.  
  876. baseclass/BASE_RELAYOUT
  877.  
  878.     NAME
  879.     BASE_RELAYOUT -- Force an object to layout again.
  880.  
  881.     SYNOPSIS
  882.     BGUI_DoGadgetMethod( obj, bmRelayout);
  883.  
  884.     Object        *obj;
  885.     struct bmRelayout *bmRelayout;
  886.  
  887.     FUNCTION
  888.     To force a object in an opened window to layout again.  If the object
  889.   does not fit in the current group it may force all the parent groups to
  890.   resize and eventually the window on which it is displayed.
  891.  
  892.     INPUTS
  893.     obj - A pointer to the object which is to be layed out again.
  894.     bmRelayout - A pointer to a BASE_RELAYOUT method structure.
  895.  
  896.     RESULT
  897.     Returns TRUE if the window did not need to resize or if the after
  898.     resizing it still fits on the screen.
  899.  
  900.     SEE ALSO
  901.  
  902. baseclass/BASE_REMCONDITIONAL
  903.  
  904. NAME
  905.  
  906.    BASE_REMCONDITIONAL -- Remove an conditional notification object.
  907.  
  908. SYNOPSIS
  909.  
  910.    err = DoMethod( obj, BASE_REMCONDITIONAL, target );
  911.  
  912.    ULONG    err;
  913.    Object  *target;
  914.  
  915. FUNCTION
  916.  
  917.    To remove an object from the conditional notification list which was
  918.    previously added with BASE_ADDCONDITIONAL.
  919.  
  920. INPUTS
  921.  
  922.    target   -  A pointer to the object to remove which was previously added with
  923.                the BASE_ADDCONDITIONAL method.
  924.  
  925. RESULT
  926.  
  927.    err   -  TRUE for success, FALSE for failure.
  928.  
  929. EXAMPLE
  930.  
  931.    /*
  932.     * Remove 'obj2' from 'obj1' its conditional
  933.     * notification list.
  934.     */
  935.    Domethod( obj1, BASE_REMCONDITIONAL, obj2 );
  936.  
  937. SEE ALSO
  938.  
  939.    BASE_ADDCONDITIONAL
  940.  
  941. baseclass/BASE_REMHOOK
  942.  
  943. NAME
  944.  
  945.    BASE_REMHOOK -- Remove a notification hook.
  946.  
  947. SYNOPSIS
  948.  
  949.    err = DoMethod( obj, BASE_REMHOOK, hook );
  950.  
  951.    ULONG          err;
  952.    struct   Hook *hook;
  953.  
  954. FUNCTION
  955.  
  956.    To  remove a hook from the hook notification list which was previously added
  957.    with BASE_ADDHOOK.
  958.  
  959. INPUTS
  960.  
  961.    hook  -  A pointer to the hook to remove which was previously added with the
  962.             BASE_ADDHOOK method.
  963.  
  964. RESULT
  965.  
  966.    err   -  TRUE for success, FALSE for failure.
  967.  
  968. EXAMPLE
  969.    /*
  970.     * Remove 'hook' from 'obj' its hook
  971.     * notification list.
  972.     */
  973.    Domethod( obj, BASE_REMHOOK, hook );
  974.  
  975. SEE ALSO
  976.  
  977.    BASE_ADDHOOK
  978.  
  979. baseclass/BASE_REMMAP
  980.  
  981. NAME
  982.  
  983.    BASE_REMMAP -- Remove a maplist notification object.
  984.  
  985. SYNOPSIS
  986.  
  987.    err = DoMethod( obj, BASE_REMMAP, target );
  988.  
  989.    ULONG    err;
  990.    Object  *target;
  991.  
  992. FUNCTION
  993.  
  994.    To remove an object from the maplist notification list which was previously
  995.    added with BASE_ADDMAP.
  996.  
  997. INPUTS
  998.  
  999.    target   -  A pointer to the object to remove which was previously added with
  1000.                the BASE_ADDMAP method.
  1001.  
  1002. RESULT
  1003.  
  1004.    err   -  TRUE for success, FALSE for failure.
  1005.  
  1006. EXAMPLE
  1007.    /*
  1008.     * Remove 'obj2' from 'obj1' its maplist
  1009.     * notification list.
  1010.     */
  1011.    Domethod( obj1, BASE_REMMAP, obj2 );
  1012.  
  1013. SEE ALSO
  1014.  
  1015.    BASE_ADDMAP
  1016.  
  1017. baseclass/BASE_REMMETHOD
  1018.  
  1019. NAME
  1020.  
  1021.    BASE_REMMETHOD -- Remove a method notification object.
  1022.  
  1023. SYNOPSIS
  1024.  
  1025.    err = DoMethod( obj, BASE_REMMETHOD, target );
  1026.  
  1027.    ULONG    err;
  1028.    Object  *target;
  1029.  
  1030. FUNCTION
  1031.  
  1032.    To remove an object from the method notification list which was previously
  1033.    added with BASE_ADDMETHOD.
  1034.  
  1035. INPUTS
  1036.  
  1037.    target   -  A pointer to the object to remove which was previously
  1038.                added with the BASE_ADDMETHOD method.
  1039.  
  1040. RESULT
  1041.  
  1042.    err   - TRUE for success, FALSE for failure.
  1043.  
  1044. EXAMPLE
  1045.  
  1046.    /*
  1047.     * Remove 'obj2' from 'obj1' its method
  1048.     * notification list.
  1049.     */
  1050.    Domethod( obj1, BASE_REMMETHOD, obj2 );
  1051.  
  1052. SEE ALSO
  1053.  
  1054.    BASE_ADDMETHOD
  1055.  
  1056. baseclass/BASE_SETLOOP
  1057.  
  1058. NAME
  1059.  
  1060.    BASE_SETLOOP -- Private!
  1061.  
  1062. baseclass/BASE_SHOWHELP
  1063.  
  1064. NAME
  1065.  
  1066.    BASE_SHOWHELP -- Private!
  1067.  
  1068. baseclass/BT_BottomOffset
  1069.  
  1070. NAME
  1071.  
  1072.     BT_BottomOffset -- ( ULONG )
  1073.  
  1074. FUNCTION
  1075.  
  1076.     This is a gap just inside the enclosing frame for the gadget,
  1077.     measured in pixels.
  1078.  
  1079.     The default value of 0 means that the outer frame encloses the
  1080.     gadget "tightly", with no gap in between.
  1081.  
  1082.     Values higher than zero will give you a gap.
  1083.  
  1084.     eg. setting this to 10 will mean there is a 10 pixel high gap
  1085.     between the bottom of the frame and the InnerBox of your
  1086.     gadget.
  1087.  
  1088. DEFAULT
  1089.  
  1090.     0.  (no gap)
  1091.  
  1092. APPLICABILITY
  1093.  
  1094.     (ISG).
  1095.  
  1096. SEE ALSO
  1097.  
  1098.     BT_LeftOffset, BT_RightOffset, BT_TopOffset
  1099.  
  1100.  
  1101. baseclass/BT_Buffer
  1102.  
  1103. NAME
  1104.  
  1105.      BT_Buffer -- ( ULONG )
  1106.  
  1107.      ** V41.6 **
  1108.  
  1109. FUNCTION
  1110.  
  1111.      To be documented.
  1112.  
  1113. DEFAULT
  1114.  
  1115.      To be documented.
  1116.  
  1117. APPLICABILITY
  1118.  
  1119.      (ISG).
  1120.  
  1121. SEE ALSO
  1122.  
  1123.  
  1124.  
  1125.  
  1126. baseclass/BT_DragObject
  1127.  
  1128. NAME
  1129.  
  1130.      BT_DragObject -- ( BOOL )
  1131.  
  1132.      ** V40 **
  1133.  
  1134. FUNCTION
  1135.  
  1136.      To enable the object to be dragged around the screen and dropped on other
  1137.      objects by the user.
  1138.  
  1139. DEFAULT
  1140.  
  1141.      FALSE.
  1142.  
  1143. APPLICABILITY
  1144.  
  1145.      (ISG).
  1146.  
  1147. SEE ALSO
  1148.  
  1149.      BT_DropObject, BT_DragThreshold, BT_DragQualifier
  1150.  
  1151.  
  1152. baseclass/BT_DragQualifier
  1153.  
  1154. NAME
  1155.  
  1156.      BT_DragQualifier -- ( UWORD )
  1157.  
  1158.      ** V40 **
  1159.  
  1160. FUNCTION
  1161.  
  1162.      To specify the qualifier of the input event that must be present to allow
  1163.      dragging. For example you might choose to support the dragging of an object
  1164.      only if the left alt key is pressed while selecting the object. A simple
  1165.  
  1166.             BT_DragQualifier, IEQUALIFIER_LALT
  1167.  
  1168.      will do this.
  1169.  
  1170.      Have a look at the "devices/inputevent.[h][i]" file for the available
  1171.      possibilities.
  1172.  
  1173. DEFAULT
  1174.  
  1175.      ~0 (no qualifier).
  1176.  
  1177. APPLICABILITY
  1178.  
  1179.      (ISG).
  1180.  
  1181. SEE ALSO
  1182.  
  1183.      BT_DragObject, BT_DropObject, BT_DragThreshold, devices/inputevent.h
  1184.  
  1185.  
  1186. baseclass/BT_DragThreshold
  1187.  
  1188. NAME
  1189.  
  1190.      BT_DragThreshold -- ( ULONG )
  1191.  
  1192.      ** V40 **
  1193.  
  1194. FUNCTION
  1195.  
  1196.      To set the number of pixels that the mouse must be moved before the object is
  1197.      actually dragged.
  1198.  
  1199. DEFAULT
  1200.  
  1201.      3.
  1202.  
  1203. APPLICABILITY
  1204.  
  1205.      (ISG).
  1206.  
  1207. SEE ALSO
  1208.  
  1209.      BT_DragObject, BT_DropObject, BT_DragQualifier
  1210.  
  1211.  
  1212. baseclass/BT_DropObject
  1213.  
  1214. NAME
  1215.  
  1216.      BT_DropObject -- ( BOOL )
  1217.  
  1218.      ** V40 **
  1219.  
  1220. FUNCTION
  1221.  
  1222.      To enable the object to receive messages from a draggable object.
  1223.  
  1224. DEFAULT
  1225.  
  1226.      FALSE.
  1227.  
  1228. APPLICABILITY
  1229.  
  1230.      (ISG).
  1231.  
  1232. SEE ALSO
  1233.  
  1234.      BT_DragObject, BT_DragThreshold, BT_DragQualifier
  1235.  
  1236.  
  1237. baseclass/BT_HelpFile
  1238.  
  1239. NAME
  1240.  
  1241.    BT_HelpFile -- ( STRPTR )
  1242.  
  1243. FUNCTION
  1244.  
  1245.    Set the name of the file to be displayed when a help-request for the object
  1246.    arives. Please note that the full path-name must be given.
  1247.  
  1248. DEFAULT
  1249.  
  1250.    NULL.
  1251.  
  1252. APPLICABILITY
  1253.  
  1254.    (ISG).
  1255.  
  1256. SEE ALSO
  1257.  
  1258.    BT_HelpNode, BT_HelpLine
  1259.  
  1260.  
  1261. baseclass/BT_HelpHook
  1262.  
  1263. NAME
  1264.  
  1265.      BT_HelpHook -- ( ULONG )
  1266.  
  1267.      ** V 41.7 **
  1268.  
  1269. FUNCTION
  1270.  
  1271.      To be documented.
  1272.  
  1273. DEFAULT
  1274.  
  1275.      To be documented.
  1276.  
  1277. APPLICABILITY
  1278.  
  1279.      (ISG).
  1280.  
  1281. SEE ALSO
  1282.  
  1283.  
  1284.  
  1285. baseclass/BT_HelpLine
  1286.  
  1287. NAME
  1288.  
  1289.    BT_HelpLine - ( ULONG )
  1290.  
  1291. FUNCTION
  1292.  
  1293.    Set the line number from which the file is displayed. This may be useful if
  1294.    the help-file is not an AmigaGuide file.
  1295.  
  1296. DEFAULT
  1297.  
  1298.    0.
  1299.  
  1300. APPLICABILITY
  1301.  
  1302.    (ISG).
  1303.  
  1304. SEE ALSO
  1305.  
  1306.    BT_HelpFile, BT_HelpNode
  1307.  
  1308.  
  1309. baseclass/BT_HelpNode
  1310.  
  1311. NAME
  1312.  
  1313.    BT_HelpNode -- ( STRPTR )
  1314.  
  1315. FUNCTION
  1316.  
  1317.    Set the name of the node which is diplayed in the help window.
  1318.  
  1319. DEFAULT
  1320.  
  1321.    NULL.
  1322.  
  1323. APPLICABILITY
  1324.  
  1325.    (ISG).
  1326.  
  1327. SEE ALSO
  1328.  
  1329.    BT_HelpFile, BT_HelpLine
  1330.  
  1331.  
  1332. baseclass/BT_HelpText
  1333.  
  1334. NAME
  1335.  
  1336.    BT_HelpText -- ( STRPTR)
  1337.  
  1338. FUNCTION
  1339.  
  1340.    To setup a text which will be displayed if the help-key is pressed while the 
  1341.    mouse pointer is located above the object. This attribute should be used to
  1342.    attach small on-line help to the object. The text you specify will be shown
  1343.    in a small BGUI_RequestA() type of requester so you must make sure that
  1344.    everything fit's nicely on a 600x200 screen.
  1345.  
  1346.    The specified text may contain any of the infoclass command sequences.
  1347.  
  1348.    This attribute overides the BT_HelpFile, BT_HelpNode and BT_HelpLine
  1349.    attributes. Also note that the requester which pops up is synchronous.
  1350.  
  1351. DEFAULT
  1352.  
  1353.    NULL.
  1354.  
  1355. APPLICABILITY
  1356.  
  1357.    (ISG).
  1358.  
  1359. SEE ALSO
  1360.  
  1361.    BT_HelpFile, BT_HelpNode, BT_HelpLine, infoclass.doc/INFO_TextFormat,
  1362.    bgui.library/BGUI_RequestA()
  1363.  
  1364.  
  1365. baseclass/BT_HelpTextID
  1366.  
  1367. NAME
  1368.  
  1369.    BT_HelpTextID -- ( ULONG )
  1370.  
  1371.    ** V41 **
  1372.  
  1373. FUNCTION
  1374.  
  1375.    Set or get the ID for BT_HelpText. BASE_LOCALIZE uses this to set
  1376.    BT_HelpText.
  1377.  
  1378. DEFAULT
  1379.  
  1380.    0.
  1381.  
  1382. APPLICABILITY
  1383.  
  1384.    (ISG).
  1385.  
  1386. SEE ALSO
  1387.  
  1388.    BT_HelpText, baseclass.doc/BASE_LOCALIZE
  1389.  
  1390.  
  1391. baseclass/BT_HitBox
  1392.  
  1393. NAME
  1394.  
  1395.    BT_HitBox - ( struct IBox * )
  1396.  
  1397. FUNCTION
  1398.  
  1399.    Get the hitbox bounds of the gadget object. This attribute is normally only
  1400.    useful for class writers although there might be cases in which this
  1401.    attribute may be useful to application programmers to.
  1402.  
  1403.    Getting this attribute will pass you a pointer to a _READ ONLY_ struct IBox
  1404.    in which the bounds of the object are located.
  1405.  
  1406.    Please note that the contents of the returned IBox structure is only valid
  1407.    _after_ you let this class render itself.
  1408.  
  1409. DEFAULT
  1410.  
  1411.    None.
  1412.  
  1413. APPLICABILITY
  1414.  
  1415.    (G).
  1416.  
  1417. EXAMPLE
  1418.  
  1419.    __saveds __asm ULONG
  1420.    dispatcher ( __a0 Class *cl, __A2 Object *obj, __A1 Msg msg )
  1421.    {
  1422.       struct IBox    *domain;
  1423.  
  1424.       switch ( msg->MethodID ) {
  1425.  
  1426.          ...
  1427.  
  1428.          case  GM_RENDER:
  1429.             /*
  1430.             ** First let the superclass render.
  1431.             **/
  1432.             if ( ! DoSuperMethodA( cl, obj, msg ))
  1433.                return( 0L );
  1434.             /*
  1435.             ** Now you can obtain the object
  1436.             ** it's hitbox bounds.
  1437.             **/
  1438.             DoSuperMethod( cl, obj, OM_GET,
  1439.                       BT_HitBox, &domain );
  1440.  
  1441.             ...
  1442.  
  1443.             break;
  1444.       }
  1445.    }
  1446.  
  1447.  
  1448. baseclass/BT_Inhibit
  1449.  
  1450. NAME
  1451.  
  1452.    BT_Inhibit -- ( BOOL )
  1453.  
  1454.    ** V39 **
  1455.  
  1456. FUNCTION
  1457.  
  1458.    This attribute has been made public for people needing to know whether or not
  1459.    an object is located on a visible page. This attribute is read only and will
  1460.    read TRUE when an object is located on an invisible page and FALSE if the
  1461.    object is located on a visible page.
  1462.  
  1463. DEFAULT
  1464.  
  1465.    FALSE.
  1466.  
  1467. APPLICABILITY
  1468.  
  1469.    (G).
  1470.  
  1471.  
  1472. baseclass/BT_InnerBox
  1473.  
  1474. NAME
  1475.  
  1476.      BT_InnerBox -- ( ULONG )
  1477.  
  1478. FUNCTION
  1479.  
  1480.      To be documented.
  1481.  
  1482. DEFAULT
  1483.  
  1484.      To be documented.      
  1485.  
  1486. APPLICABILITY
  1487.  
  1488.      (G).
  1489.  
  1490. SEE ALSO
  1491.  
  1492.     BT_OuterBox
  1493.  
  1494.  
  1495. baseclass/BT_Key
  1496.  
  1497. NAME
  1498.  
  1499.    BT_Key -- ( STRPTR )
  1500.  
  1501.    ** V41 **
  1502.  
  1503. FUNCTION
  1504.  
  1505.    To attach a key equivalent to an object. As of V41.3, events are processed as
  1506.    IDCMP_VANILLAKEY, so any key may be attached, including characters that
  1507.    require qualifiers and deadkeys.
  1508.    
  1509.    It is usually not desirable to specify a qualifier with BT_Qualifier, but it
  1510.    is possible. This could be useful to distinguish between a a number pressed
  1511.    on the main keyboard and one on the numeric keypad, for example.
  1512.  
  1513. DEFAULT
  1514.  
  1515.    NULL.
  1516.  
  1517. APPLICABILITY
  1518.  
  1519.    (ISG).
  1520.  
  1521. SEE ALSO
  1522.  
  1523.    BT_Qualifier, BT_RawKey, BASE_FINDRAWKEY, BASE_KEYLABEL,
  1524.    windowclass.doc/WINDOW_AutoKeyLabel
  1525.  
  1526.  
  1527. baseclass/BT_LabelClick
  1528.  
  1529. NAME
  1530.  
  1531.    BT_LabelClick -- ( BOOL )
  1532.  
  1533. FUNCTION
  1534.  
  1535.    To tell the baseclass to also consider clicking inside the gadget
  1536.    label as a hit.
  1537.  
  1538. DEFAULT
  1539.  
  1540.    FALSE.
  1541.  
  1542. APPLICABILITY
  1543.  
  1544.    (I).
  1545.  
  1546. SEE ALSO
  1547.  
  1548.    GM_HITTEST
  1549.  
  1550.  
  1551. baseclass/BT_LabelObject/BT_FrameObject
  1552.  
  1553. NAME
  1554.  
  1555.    BT_LabelObject, BT_FrameObject -- ( Object * )
  1556.  
  1557. FUNCTION
  1558.  
  1559.    Set or get the frame/label object to use. Normally only class writers use
  1560.    these attributes. You can use them to obtain a pointer to the label/frame
  1561.    object or to erase/change the label/frame object. If, for example, your class
  1562.    uses its own custom rendering you can dispose of the baseclass frame by
  1563.    setting it to NULL like this:
  1564.  
  1565.       SetAttrs( object, FRM_FrameObject, NULL, TAG_END );
  1566.  
  1567. DEFAULT
  1568.  
  1569.    The frame/label build from the attributes passed to the object at create
  1570.    time.
  1571.  
  1572. APPLICABILITY
  1573.  
  1574.    (SG).
  1575.  
  1576. SEE ALSO
  1577.  
  1578.    intuition.library/SetAttrs()
  1579.  
  1580.  
  1581. baseclass/BT_LeftOffset
  1582.  
  1583. NAME
  1584.  
  1585.      BT_LeftOffset -- ( ULONG )
  1586.  
  1587.      ** V ? **
  1588.  
  1589. FUNCTION
  1590.  
  1591.     This is a gap just inside the enclosing frame for the gadget,
  1592.     measured in pixels.
  1593.  
  1594.     The default value of 0 means that the outer frame encloses the
  1595.     gadget "tightly", with no gap in between.
  1596.  
  1597.     Values higher than zero will give you a gap.
  1598.  
  1599.     eg. setting this to 10 will mean there is a 10 pixel wide gap
  1600.     between the left of the frame and the InnerBox of your
  1601.     gadget.
  1602.  
  1603. DEFAULT
  1604.  
  1605.     0.  (no gap)
  1606.  
  1607. APPLICABILITY
  1608.  
  1609.      (ISG).
  1610.  
  1611. SEE ALSO
  1612.  
  1613.     BT_RightOffset, BT_TopOffset, BT_BottomOffset
  1614.  
  1615.  
  1616. baseclass/BT_MouseActivation
  1617.  
  1618. NAME
  1619.  
  1620.     BT_MouseActivation -- ( ULONG )
  1621.  
  1622.     ** V41.5 **
  1623.  
  1624. FUNCTION
  1625.  
  1626.     This flag/attribute allows the gadget to respond to right and middle mouse
  1627.     buttons. By setting BT_MouseActivation to some combination of the following
  1628.     flags, you can allow the gadget to hear mouse button clicks from any of the
  1629.     buttons, left, middle, right.
  1630.  
  1631.     The following values may be ORed together:
  1632.     · MOUSEACT_RMB_ACTIVE
  1633.                 The right mouse button will activate the gadget
  1634.                 just like the left mouse button.
  1635.  
  1636.     · MOUSEACT_RMB_REPORT
  1637.                 This is to make the right mouse button cause the
  1638.                 gadget ID to be reported in a notification event.
  1639.  
  1640.     · MOUSEACT_MMB_ACTIVE  same as above except for the middle mouse button.
  1641.     · MOUSEACT_MMB_REPORT
  1642.  
  1643.     BOOPSI gadgets are not supposed to handle right mouse events until the
  1644.     gadget becomes active.  However, if the window class gets right mouse
  1645.     button events when the mouse is over a gadget with this attribute set, the
  1646.     gadget is activated.
  1647.  
  1648.     This way we can implement a context sensitive menu or another user interface
  1649.     action being triggered by the the right or middle mouse button.
  1650.  
  1651.     It is actually the Window class that makes use of this attribute, allowing
  1652.     whatever mouse button events you are interested in through to your gadget.
  1653.     BGUI Window class handles Intuition events for us.
  1654.  
  1655.     To let this happen, the Window must be getting mouse events.
  1656.  
  1657.     How do you specify that a Window should get mouse events?
  1658.  
  1659.     You have to set IDCMP_MOUSEMOVE and IDCMP_MOUSEBUTTONS for the Window IDCMP
  1660.     flags but BGUI sets that for you.
  1661.  
  1662.     When does a Window not get mouse events?
  1663.  
  1664.     - When the window is not active
  1665.     - When the user pulls down an Intuition menu and the Window does not have
  1666.         RMBTrap set.
  1667.  
  1668. NOTE
  1669.  
  1670.     The left mouse button is most usually the "Select" button, and the right
  1671.     mouse button the "Menu" button. This can be swapped, without physically
  1672.     changing the mouse! The input events the gadget receives are
  1673.     SELECTDOWN, SELECTUP, MENUDOWN, and MENUUP.
  1674.  
  1675. DEFAULT
  1676.  
  1677.     0 (zero).   (only activate on left mouse presses/releases)
  1678.  
  1679. APPLICABILITY
  1680.  
  1681.     (ISG)
  1682.  
  1683. SEE ALSO
  1684.  
  1685.     bgui.h for the definition of this attribute and the flags above.
  1686.  
  1687.  
  1688. baseclass/BT_NoRecessed
  1689.  
  1690. NAME
  1691.  
  1692.    BT_NoRecessed -- ( BOOL )
  1693.  
  1694. FUNCTION
  1695.  
  1696.    To tell the baseclass not to recess the frame when the gadget object is
  1697.    selected. The checkboxclass uses this attribute.
  1698.  
  1699. DEFAULT
  1700.  
  1701.    FALSE.
  1702.  
  1703. APPLICABILITY
  1704.  
  1705.    (S).
  1706.  
  1707.  
  1708. baseclass/BT_OuterBox
  1709.  
  1710. NAME
  1711.  
  1712.      BT_OuterBox -- ( ULONG )
  1713.  
  1714.      ** V 41.8 **
  1715.  
  1716. FUNCTION
  1717.  
  1718.      To be documented.
  1719.  
  1720. DEFAULT
  1721.  
  1722.      To be documented.
  1723.  
  1724. APPLICABILITY
  1725.  
  1726.      (G).
  1727.  
  1728. SEE ALSO
  1729.  
  1730.     BT_InnerBox
  1731.  
  1732.  
  1733. baseclass/BT_PostRenderHighestClass
  1734.  
  1735. NAME
  1736.  
  1737.      BT_PostRenderHighestClass -- ( ULONG )
  1738.  
  1739. FUNCTION
  1740.  
  1741.      To be documented.
  1742.  
  1743. DEFAULT
  1744.  
  1745.      To be documented.
  1746.  
  1747. APPLICABILITY
  1748.  
  1749.      (G).
  1750.  
  1751. SEE ALSO
  1752.  
  1753.  
  1754. baseclass/BT_Qualifier
  1755.  
  1756. NAME
  1757.  
  1758.    BT_Qualifier -- ( UWORD )
  1759.  
  1760.    ** V41 **
  1761.  
  1762. FUNCTION
  1763.  
  1764.    Set the key activation qualifier for the object. When the user presses a key,
  1765.    the qualifier must match exactly for the object to be activated. Only
  1766.    keyboard qualifiers are considered.
  1767.    
  1768.    If you want the object to respond to either shift key, then set both
  1769.    IEQUALIFIER_LSHIFT and IEQUALIFIER_RSHIFT, and the object will respond to
  1770.    either one or both. You may do this with LALT and RALT as well.
  1771.    
  1772.    A value of ~0 will cause qualifiers to be ignored.
  1773.  
  1774. DEFAULT
  1775.  
  1776.    ~0.
  1777.  
  1778. APPLICABILITY
  1779.  
  1780.    (ISG).
  1781.  
  1782. SEE ALSO
  1783.  
  1784.    BT_Key, BT_RawKey, BASE_FINDRAWKEY, BASE_KEYLABEL,
  1785.    windowclass.doc/WINDOW_AutoKeyLabel
  1786.  
  1787.  
  1788. baseclass/BT_RawKey
  1789.  
  1790. NAME
  1791.  
  1792.    BT_RawKey -- ( UBYTE )
  1793.  
  1794.    ** V41 **
  1795.  
  1796. FUNCTION
  1797.  
  1798.    To attach a key equivalent to an object. This must be a key-down event.
  1799.    IDCMP_VANILLAKEY events take precedence, so use BT_Key unless you need a
  1800.    function key, the HELP key, or the cursor keys. You may specify a qualifier
  1801.    with BT_Qualifier.
  1802.    
  1803.    Note: 0 is a valid rawkey. To remove the rawkey equivalent, set BT_RawKey to
  1804.    (UBYTE)~0.
  1805.  
  1806. DEFAULT
  1807.  
  1808.    ~0.
  1809.    
  1810. APPLICABILITY
  1811.  
  1812.    (ISG).
  1813.  
  1814. SEE ALSO
  1815.  
  1816.    BT_Key, BT_Qualifier, BASE_FINDRAWKEY, BASE_KEYLABEL,
  1817.    windowclass.doc/WINDOW_AutoKeyLabel
  1818.  
  1819.  
  1820. baseclass/BT_RightOffset
  1821.  
  1822. NAME
  1823.  
  1824.      BT_RightOffset -- ( ULONG )
  1825.  
  1826.      ** V ? **
  1827.  
  1828. FUNCTION
  1829.  
  1830.     This is a gap just inside the enclosing frame for the gadget,
  1831.     measured in pixels.
  1832.  
  1833.     The default value of 0 means that the outer frame encloses the
  1834.     gadget "tightly", with no gap in between.
  1835.  
  1836.     Values higher than zero will give you a gap.
  1837.  
  1838.     eg. setting this to 10 will mean there is a 10 pixel wide gap
  1839.     between the right of the frame and the InnerBox of your
  1840.     gadget.
  1841.  
  1842. DEFAULT
  1843.  
  1844.     0.  (no gap)
  1845.  
  1846. APPLICABILITY
  1847.  
  1848.      (ISG).
  1849.  
  1850. SEE ALSO
  1851.  
  1852.     BT_LeftOffset, BT_TopOffset, BT_BottomOffset
  1853.  
  1854.  
  1855. baseclass/BT_TextAttr
  1856.  
  1857. NAME
  1858.  
  1859.    BT_TextAttr -- ( struct TextAttr * )
  1860.  
  1861. FUNCTION
  1862.  
  1863.    Set/Get the font which will be used by the frame and label of the class.
  1864.    Class writers might want to intercept and copy this data before passing it
  1865.    onto the superclass.
  1866.  
  1867. NOTE ** V39 **
  1868.  
  1869.    Since V39 this attribute has been made settable at create time. When you
  1870.    create an object with BT_TextAttr set the font you pass will be used
  1871.    throughout the life of the object. Otherwise the font will be determined by
  1872.    the one you set in the windowclass.
  1873.  
  1874. DEFAULT
  1875.  
  1876.    NULL (Screen font).
  1877.  
  1878. APPLICABILITY
  1879.  
  1880.    (ISG).
  1881.  
  1882.  
  1883. baseclass/BT_ToolTip
  1884.  
  1885. NAME
  1886.  
  1887.    BT_ToolTip -- ( UBYTE * )
  1888.  
  1889.    ** V40 **
  1890.  
  1891. FUNCTION
  1892.  
  1893.    To set the tool tip text for this object. The tool tip is displayed when the
  1894.    user holds the mouse still over the object for a specific amount of
  1895.    INTUITICKS. The INTUITICKS occur about ten times a second.
  1896.  
  1897.    ToolTips should be used on objects for which it is  not immediately obvious
  1898.    what it does. Like for instance the objects in graphical tool bars etc.
  1899.  
  1900. DEFAULT
  1901.  
  1902.    NULL.
  1903.  
  1904. APPLICABILITY
  1905.  
  1906.    (ISG).
  1907.  
  1908.  
  1909. baseclass/BT_ToolTipID
  1910.  
  1911. NAME
  1912.  
  1913.    BT_ToolTipID -- ( ULONG )
  1914.  
  1915.    ** V41 **
  1916.  
  1917. FUNCTION
  1918.  
  1919.    Set or get the ID for BT_ToolTip. BASE_LOCALIZE uses this to set BT_ToolTip.
  1920.  
  1921. DEFAULT
  1922.  
  1923.    0.
  1924.  
  1925. APPLICABILITY
  1926.  
  1927.    (ISG).
  1928.  
  1929. SEE ALSO
  1930.  
  1931.    BT_ToolTip, baseclass.doc/BASE_LOCALIZE
  1932.  
  1933.  
  1934. baseclass/BT_TopOffset
  1935.  
  1936. NAME
  1937.  
  1938.      BT_TopOffset -- ( ULONG )
  1939.  
  1940.      ** V ? **
  1941.  
  1942. FUNCTION
  1943.  
  1944.     This is a gap just inside the enclosing frame for the gadget,
  1945.     measured in pixels.
  1946.  
  1947.     The default value of 0 means that the outer frame encloses the
  1948.     gadget "tightly", with no gap in between.
  1949.  
  1950.     Values higher than zero will give you a gap.
  1951.  
  1952.     eg. setting this to 10 will mean there is a 10 pixel high gap
  1953.     between the top of the frame and the InnerBox of your
  1954.     gadget.
  1955.  
  1956. DEFAULT
  1957.  
  1958.     0.  (no gap)
  1959.  
  1960. APPLICABILITY
  1961.  
  1962.      (ISG).
  1963.  
  1964. SEE ALSO
  1965.  
  1966.     BT_LeftOffset, BT_RightOffset, BT_BottomOffset
  1967.  
  1968.  
  1969. baseclass/GM_GOACTIVE
  1970.  
  1971. NAME
  1972.  
  1973.    GM_GOACTIVE -- Tell the object to go active.
  1974.  
  1975. FUNCTION
  1976.  
  1977.    This method will set up any required drag and drop buffers.  When this method
  1978.    returns GMR_NOREUSE it means that either drag operations are not supported
  1979.    for this object or the available memory will not allow it.
  1980.  
  1981.    When GMR_MEACTIVE is returned the drag and drop buffers are set up OK.
  1982.  
  1983.  
  1984. baseclass/GM_GOINACTIVE
  1985.  
  1986. NAME
  1987.  
  1988.    GM_GOINACTIVE -- Tell an object to deactivate.
  1989.  
  1990. FUNCTION
  1991.  
  1992.    This method will clean up any drag and drop buffers which may have been
  1993.    allocated.
  1994.  
  1995.  
  1996. baseclass/GM_HITTEST
  1997.  
  1998. NAME
  1999.  
  2000.    GM_HITTEST -- Check if the object was "hit".
  2001.  
  2002. FUNCTION
  2003.  
  2004.    This method will return GMR_GADGETHIT when the object was clicked inside it's
  2005.    hitbox area. It will also return GMR_GADGETHIT when the object was clicked
  2006.    inside it label and the BT_LabelClick attribute of this object is set to
  2007.    TRUE.
  2008.  
  2009. SEE ALSO
  2010.  
  2011.    BT_LabelClick
  2012.  
  2013.  
  2014. baseclass/GM_RENDER
  2015.  
  2016. NAME
  2017.  
  2018.    GM_RENDER -- Render the object.
  2019.  
  2020. FUNCTION
  2021.  
  2022.    If this message requests a complete re-rendering (I.E. GREDRAW_REDRAW) this
  2023.    method will render the frame and label when available. On any other request
  2024.    it will simply re-compute the gadget hitbox bounds. When this method returns
  2025.    a non-NULL value you are also allowed to render. If this method returns NULL
  2026.    then you may not render.
  2027.  
  2028.    Your class _must_ also follow the same rules. If the superclass of your class
  2029.    returns NULL you do not render and also return NULL. If the superclass of your
  2030.    class returns a non-NULL value you should render and also return a non-NULL
  2031.    value.
  2032.  
  2033.    Your class must use the gpr_RPort field for _all_ rendering. This usually
  2034.    points to a buffer rastport in which you render without it showing on screen.
  2035.    This also means that if your class uses OM_SET on another object you must do
  2036.    so without passing the gpr_GInfo field and re-render that object later in the
  2037.    RastPort pointed to by the gpr_RPort field.
  2038.  
  2039.    RastPort-Clipping is not allowed for BGUI objects. The reason for this
  2040.    limitation is that all rendering occurs in a buffer rastport without a layer
  2041.    attached to it. If your class absolutely needs clipping you must use the
  2042.    WINDOW_NoBufferRP or PAGE_NoBufferRP on the window object or page object in
  2043.    which the object is located.
  2044.  
  2045.  
  2046. baseclass/OM_NOTIFY
  2047.  
  2048. NAME
  2049.  
  2050.    OM_NOTIFY -- Notify attribute changes.
  2051.  
  2052. FUNCTION
  2053.  
  2054.    This method will first execute all maplist, conditional, method and hook
  2055.    notification. When that is done the method is passed onto GADGETCLASS for any
  2056.    ICA_TARGET's that might still exist.
  2057.  
  2058.  
  2059. baseclass/OM_UPDATE
  2060.  
  2061. NAME
  2062.  
  2063.    OM_UPDATE -- Update attributes.
  2064.  
  2065. FUNCTION
  2066.  
  2067.    This method fixes a bug in the system GADGETCLASS. Even though the BOOPSI
  2068.    gadgetclass documentation states that the GA_ID attribute of a gadget object
  2069.    cannot be changed by a OM_UPDATE message it still does. As this behaviour is
  2070.    not correct the baseclass intercepts the GA_ID attribute before passing it on
  2071.    to the GADGETCLASS. This way GA_ID will not be changable by a OM_UPDATE call.
  2072.  
  2073.  
  2074.